/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * GerOrcamento.java
 *
 * Created on 20/09/2010, 19:22:51
 */
package camada.apresentacao.dialog.orcamento;

import tabelamodelcolumnmodel.orcamento.MaterialProdutoOrcamentoColumnModel;
import tabelamodelcolumnmodel.orcamento.MaterialProdutoOrcamentoTableModel;
import camada.bancodedados.daoimplemente.material.MaterialDAOImpl;
import camada.bancodedados.daoimplemente.orcamento.TipoProdutoDAOImpl;
import combomodel.ComboBoxMaterialModel;
import combomodel.ComboBoxTipoProdutoModel;
import eloma.classe.material.Material;
import eloma.classe.orcamento.MaterialProdutoOrcamento;
import eloma.classe.orcamento.ProdutoOrcamento;
import eloma.classe.orcamento.TipoProduto;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
import javax.swing.ListSelectionModel;
import utilitarios.Exceptions;

/**
 *
 * @author Larissa
 */
public class DialogCadProdutoOrcamento extends javax.swing.JDialog {

    MaterialDAOImpl daoMaterial = new MaterialDAOImpl();
    TipoProdutoDAOImpl daoTipoProduto = new TipoProdutoDAOImpl();
    boolean tipoProduto = false;
    List<MaterialProdutoOrcamento> listaMaterialProduto = new ArrayList<MaterialProdutoOrcamento>();
    ProdutoOrcamento produtoOrcamento = new ProdutoOrcamento();
    MaterialProdutoOrcamento materialProduto = new MaterialProdutoOrcamento();
    Exceptions exceptions = new Exceptions();

    String operacao = "salvar";
    boolean vez, tipo = false;
    Object obj = new Object();
    int indexTabela;

    /**
     * Creates new form GerOrcamento
     */
    public DialogCadProdutoOrcamento(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        initComponents();
        this.setTitle("Cadastro produto");
        this.setLocationRelativeTo(null);
        carregarComboMaterialTipoProduto();
    }

    private void carregarComboMaterialTipoProduto() {
        try {

            List<TipoProduto> listTipoProduto = daoTipoProduto.pesquisarTodosTipoProduto();
            cbTipoProduto.setModel(new ComboBoxTipoProdutoModel(listTipoProduto));

            if (tipo == false) {
                List<Material> listaMaterial = daoMaterial.pesquisarTodosMaterial();
                cbMaterial.setModel(new ComboBoxMaterialModel(listaMaterial));
            }

        } catch (Exception e) {
            exceptions.Exceptions(e.getMessage(), "DialogProdutoCadOrcamento-carregarComboMaterialTipoProduto");
        }
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPanel2 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        cbMaterial = new javax.swing.JComboBox();
        jLabel2 = new javax.swing.JLabel();
        txMetros = new javax.swing.JFormattedTextField();
        jLabel3 = new javax.swing.JLabel();
        txPesoMetro = new javax.swing.JFormattedTextField();
        jLabel5 = new javax.swing.JLabel();
        jScrollPane1 = new javax.swing.JScrollPane();
        tabelaMaterialProduto = new javax.swing.JTable();
        btCancelar = new javax.swing.JButton();
        btOk = new javax.swing.JButton();
        btEditar = new javax.swing.JButton();
        btRemover = new javax.swing.JButton();
        btSalvar = new javax.swing.JButton();
        btCancelarMaterial = new javax.swing.JButton();
        jPanel1 = new javax.swing.JPanel();
        txValorAluminio = new javax.swing.JFormattedTextField();
        jLabel17 = new javax.swing.JLabel();
        jLabel18 = new javax.swing.JLabel();
        cbTipoProduto = new javax.swing.JComboBox();
        jLabel12 = new javax.swing.JLabel();
        jLabel13 = new javax.swing.JLabel();
        jLabel15 = new javax.swing.JLabel();
        txLargura = new javax.swing.JFormattedTextField();
        jLabel14 = new javax.swing.JLabel();
        txComprimento = new javax.swing.JFormattedTextField();
        jLabel16 = new javax.swing.JLabel();
        btAddTipoMaterial = new org.jdesktop.swingx.JXHyperlink();
        jLabel4 = new javax.swing.JLabel();
        lbPeso = new javax.swing.JLabel();
        lbPeso1 = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

        jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Dados material"));

        jLabel1.setText("Material:");

        cbMaterial.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Selecione um material" }));
        cbMaterial.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cbMaterialActionPerformed(evt);
            }
        });

        jLabel2.setText("Metros:");

        txMetros.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.NumberFormatter(new java.text.DecimalFormat("#0.00"))));
        txMetros.setPreferredSize(null);

        jLabel3.setText("m");

        txPesoMetro.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.NumberFormatter(new java.text.DecimalFormat("#0"))));
        txPesoMetro.setEnabled(false);
        txPesoMetro.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                txPesoMetroActionPerformed(evt);
            }
        });

        jLabel5.setText("Peso/Metro");

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel5)
                    .addComponent(jLabel1)
                    .addComponent(jLabel2)
                    .addComponent(cbMaterial, javax.swing.GroupLayout.PREFERRED_SIZE, 236, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                            .addComponent(txPesoMetro, javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(txMetros, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 83, Short.MAX_VALUE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jLabel3)))
                .addContainerGap(141, Short.MAX_VALUE))
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addComponent(jLabel1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(cbMaterial, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabel5)
                .addGap(1, 1, 1)
                .addComponent(txPesoMetro, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabel2)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(txMetros, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel3))
                .addContainerGap(10, Short.MAX_VALUE))
        );

        tabelaMaterialProduto.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {},
                {},
                {},
                {}
            },
            new String [] {

            }
        ));
        tabelaMaterialProduto.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                tabelaMaterialProdutoMouseClicked(evt);
            }
        });
        jScrollPane1.setViewportView(tabelaMaterialProduto);

        btCancelar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ima/cadastro/Cancel.png"))); // NOI18N
        btCancelar.setText("Cancelar");
        btCancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btCancelarActionPerformed(evt);
            }
        });

        btOk.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ima/outros/OK.png"))); // NOI18N
        btOk.setText("OK");
        btOk.setEnabled(false);
        btOk.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btOkActionPerformed(evt);
            }
        });

        btEditar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ima/cadastro/Editar.png"))); // NOI18N
        btEditar.setText("Editar");
        btEditar.setEnabled(false);
        btEditar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btEditarActionPerformed(evt);
            }
        });

        btRemover.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ima/cadastro/Remove.png"))); // NOI18N
        btRemover.setText("Remover");
        btRemover.setEnabled(false);
        btRemover.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btRemoverActionPerformed(evt);
            }
        });

        btSalvar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ima/cadastro/Save.png"))); // NOI18N
        btSalvar.setText("Salvar");
        btSalvar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btSalvarActionPerformed(evt);
            }
        });

        btCancelarMaterial.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ima/cadastro/Cancel.png"))); // NOI18N
        btCancelarMaterial.setText("Cancelar");
        btCancelarMaterial.setEnabled(false);
        btCancelarMaterial.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btCancelarMaterialActionPerformed(evt);
            }
        });

        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Dados produto"));

        txValorAluminio.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.NumberFormatter(new java.text.DecimalFormat("#0.00"))));
        txValorAluminio.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                txValorAluminioActionPerformed(evt);
            }
        });
        txValorAluminio.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                txValorAluminioKeyPressed(evt);
            }
        });

        jLabel17.setText("R$");

        jLabel18.setText("Valor alumínio: ");

        cbTipoProduto.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Janela" }));

        jLabel12.setText("Tipo produto:");

        jLabel13.setText("Largura:");

        jLabel15.setText("Comprimento:");

        txLargura.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.NumberFormatter(new java.text.DecimalFormat("#0.00"))));
        txLargura.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                txLarguraActionPerformed(evt);
            }
        });
        txLargura.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                txLarguraKeyPressed(evt);
            }
        });

        jLabel14.setText("m");

        txComprimento.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.NumberFormatter(new java.text.DecimalFormat("#0.00"))));
        txComprimento.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                txComprimentoActionPerformed(evt);
            }
        });
        txComprimento.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                txComprimentoKeyPressed(evt);
            }
        });

        jLabel16.setText("m");

        btAddTipoMaterial.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ima/cadastro/Add.png"))); // NOI18N
        btAddTipoMaterial.setText("");
        btAddTipoMaterial.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btAddTipoMaterialActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel12)
                            .addComponent(cbTipoProduto, javax.swing.GroupLayout.PREFERRED_SIZE, 238, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(btAddTipoMaterial, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addComponent(jLabel17)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(txValorAluminio, javax.swing.GroupLayout.PREFERRED_SIZE, 84, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addComponent(jLabel18))
                        .addGap(24, 24, 24))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                                .addComponent(txLargura, javax.swing.GroupLayout.PREFERRED_SIZE, 71, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                .addComponent(jLabel14)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED))
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addComponent(jLabel13)
                                .addGap(36, 36, 36)))
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(txComprimento, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 75, Short.MAX_VALUE)
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addComponent(jLabel15)
                                .addGap(8, 8, 8)))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jLabel16)
                        .addGap(214, 214, 214))))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel12)
                    .addComponent(jLabel18))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel17)
                            .addComponent(txValorAluminio, javax.swing.GroupLayout.DEFAULT_SIZE, 20, Short.MAX_VALUE))
                        .addGap(7, 7, 7))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(btAddTipoMaterial, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 21, Short.MAX_VALUE)
                            .addComponent(cbTipoProduto, javax.swing.GroupLayout.DEFAULT_SIZE, 21, Short.MAX_VALUE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)))
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel13)
                    .addComponent(jLabel15))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(txLargura, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel14)
                    .addComponent(txComprimento, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel16))
                .addContainerGap())
        );

        jLabel4.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel4.setText("Peso total:");

        lbPeso.setText("0");

        lbPeso1.setText("Kg");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(btSalvar)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(btEditar)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(btRemover)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(btCancelarMaterial, javax.swing.GroupLayout.PREFERRED_SIZE, 96, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING, 0, 0, Short.MAX_VALUE)
                        .addComponent(jPanel2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 399, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(jLabel4)
                            .addComponent(btOk, javax.swing.GroupLayout.PREFERRED_SIZE, 96, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(lbPeso)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(lbPeso1))
                            .addComponent(btCancelar, javax.swing.GroupLayout.PREFERRED_SIZE, 96, javax.swing.GroupLayout.PREFERRED_SIZE))))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, 164, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(btSalvar)
                    .addComponent(btEditar)
                    .addComponent(btRemover)
                    .addComponent(btCancelarMaterial))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 141, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel4)
                    .addComponent(lbPeso)
                    .addComponent(lbPeso1))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(btCancelar)
                    .addComponent(btOk))
                .addContainerGap())
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void btCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btCancelarActionPerformed
        try {
            if (listaMaterialProduto.size() != 0) {

                Object[] options = {"Sim", "Cancelar"};

                ImageIcon ima = new ImageIcon("C:/banco/Atencao.png");

                int i = JOptionPane.showOptionDialog(null,
                        "Você tem certeza do cancelamento do processo? Você perderá todas as infromações, deseja cancelar?", "Cancelar operação",
                        JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, ima,
                        options, options[0]);

                if (i == JOptionPane.YES_OPTION) {
                    produtoOrcamento = null;
                    listaMaterialProduto = null;
                    this.hide();
                }

            } else {
                this.hide();
            }
        } catch (Exception e) {
            exceptions.Exceptions(e.getMessage(), "DialogProdutoCadOrcamento-carregarComboMaterialTipoProduto");
        }
    }//GEN-LAST:event_btCancelarActionPerformed

    private void btOkActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btOkActionPerformed
        double valor = Double.valueOf(lbPeso.getText());
        produtoOrcamento.setPesoTotal(valor);
        this.hide();
    }//GEN-LAST:event_btOkActionPerformed

    private void btRemoverActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btRemoverActionPerformed
        try {

            listaMaterialProduto.remove(indexTabela);

            btSalvar.setEnabled(true);
            btEditar.setEnabled(false);
            btRemover.setEnabled(false);
            btCancelarMaterial.setEnabled(false);

            configurarTabela(listaMaterialProduto);

            txMetros.setEnabled(true);
            cbMaterial.setEnabled(true);

        } catch (Exception e) {
            exceptions.Exceptions(e.getMessage(), "DialogProdutoCadOrcamento-btRemoverActionPerformed");
        }
}//GEN-LAST:event_btRemoverActionPerformed

    private void txPesoMetroActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_txPesoMetroActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_txPesoMetroActionPerformed

    private void cbMaterialActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbMaterialActionPerformed
        DecimalFormat df = new DecimalFormat("0.000");

        Material material = (Material) cbMaterial.getSelectedItem();
        double aux = Double.valueOf(material.getPesoMetro());
        txPesoMetro.setText(df.format(aux).replace(",", ".") + " Kg/m");

    }//GEN-LAST:event_cbMaterialActionPerformed

    private void btCancelarMaterialActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btCancelarMaterialActionPerformed
        cbTipoProduto.setEnabled(false);
        btAddTipoMaterial.setEnabled(false);
        txValorAluminio.setEnabled(false);
        txLargura.setEnabled(false);
        txComprimento.setEnabled(false);

        btSalvar.setEnabled(true);
        btEditar.setEnabled(false);
        btRemover.setEnabled(false);
        btCancelarMaterial.setEnabled(false);

        cbMaterial.setSelectedIndex(-1);
        txPesoMetro.setText(null);
        txMetros.setText(null);

        cbMaterial.setEnabled(true);
        txPesoMetro.setEnabled(true);
        txMetros.setEnabled(true);

    }//GEN-LAST:event_btCancelarMaterialActionPerformed

    public List<MaterialProdutoOrcamento> retornoListaMaterialProduto() {
        return listaMaterialProduto;
    }

    public ProdutoOrcamento retornoProdutoOrcamento() {
        return produtoOrcamento;
    }

    private boolean validaCamposProduto() {

        if (cbTipoProduto.getSelectedIndex() < 0) {
            return false;
        }

        if (txValorAluminio.getText().equals("")) {
            return false;
        }

        if (txLargura.getText().equals("")) {
            return false;
        }

        if (txComprimento.getText().equals("")) {
            return false;
        }

        return true;
    }

    private boolean validarCamposMaterial() {

        if (cbMaterial.getSelectedIndex() < 0) {
            return false;
        }

        if (txMetros.getText().equals("")) {
            return false;
        }

        return true;
    }

    private void btSalvarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btSalvarActionPerformed
        try {

            if (!operacao.equals("editar")) {

                if (vez == false) {

                    if (validaCamposProduto()) {

                        if (validarCamposMaterial()) {

                            cbTipoProduto.setEnabled(false);
                            btAddTipoMaterial.setEnabled(false);
                            txValorAluminio.setEnabled(false);
                            txLargura.setEnabled(false);
                            txComprimento.setEnabled(false);

                            ComboBoxTipoProdutoModel model = (ComboBoxTipoProdutoModel) cbTipoProduto.getModel();

                            TipoProduto t = (TipoProduto) model.getSelectedItem();
                            produtoOrcamento.setTipoProduto(t);

                            produtoOrcamento.setValorAluminio(Float.valueOf(txValorAluminio.getText().replace(",", ".")));
                            produtoOrcamento.setLargura(Double.valueOf(txLargura.getText().replace(",", ".")));
                            produtoOrcamento.setComprimento(Double.valueOf(txComprimento.getText().replace(",", ".")));

                            MaterialProdutoOrcamento material = new MaterialProdutoOrcamento();
                            material.setMaterial((Material) cbMaterial.getSelectedItem());
                            material.setMetros(Double.valueOf(txMetros.getText().replace(",", ".")));

                            listaMaterialProduto.add(material);
                            cbMaterial.setSelectedIndex(0);

                            configurarTabela(listaMaterialProduto);

                            calcularKilo();

                            limpaCampos();

                        } else {
                            JOptionPane.showMessageDialog(null, "Há campos obrigatórios que não estão preenchidos", "Dados material", 1);
                        }

                    } else {
                        JOptionPane.showMessageDialog(null, "Há campos obrigatórios que não estão preenchidos", "Dados produto", 1);
                    }
                } else {
                    if (validarCamposMaterial()) {

                        MaterialProdutoOrcamento material = new MaterialProdutoOrcamento();
                        material.setMaterial((Material) cbMaterial.getSelectedItem());
                        material.setMetros(Double.valueOf(txMetros.getText().replace(",", ".")));

                        listaMaterialProduto.add(material);
                        cbMaterial.setSelectedIndex(0);

                        configurarTabela(listaMaterialProduto);

                        calcularKilo();

                        limpaCampos();

                        cbMaterial.setEnabled(true);
                        txMetros.setEnabled(true);

                    } else {
                        JOptionPane.showMessageDialog(null, "Há campos obrigatórios que não estão preenchidos", "Dados material", 1);
                    }
                }
            } else {
                TipoProduto t = (TipoProduto) cbTipoProduto.getSelectedItem();
                produtoOrcamento.setTipoProduto(t);
                produtoOrcamento.setValorAluminio(Float.valueOf(txValorAluminio.getText().replace(",", ".")));
                produtoOrcamento.setLargura(Double.valueOf(txLargura.getText().replace(",", ".")));
                produtoOrcamento.setComprimento(Double.valueOf(txComprimento.getText().replace(",", ".")));

                MaterialProdutoOrcamento mate = listaMaterialProduto.get(indexTabela);

                mate.setMaterial((Material) cbMaterial.getSelectedItem());
                mate.setMetros(Double.valueOf(txMetros.getText().replace(",", ".")));

                listaMaterialProduto.remove(indexTabela);

                configurarTabela(listaMaterialProduto);

                listaMaterialProduto.add(mate);

                configurarTabela(listaMaterialProduto);
            }

        } catch (Exception e) {
            exceptions.Exceptions(e.getMessage(), "DialogProdutoCadOrcamento-btSalvarActionPerformed");
        }
    }//GEN-LAST:event_btSalvarActionPerformed

    private void limpaCampos() {

        txPesoMetro.setText(null);
        txMetros.setText(null);

        btOk.setEnabled(true);

    }

    public void configurarTabela(List<MaterialProdutoOrcamento> lista) {
        try {

            this.setListaMaterialProdutoOrcamento(lista);

            tabelaMaterialProduto.setAutoCreateColumnsFromModel(false);
            java.awt.FontMetrics fm = tabelaMaterialProduto.getFontMetrics(tabelaMaterialProduto.getFont());

            tabelaMaterialProduto.setColumnModel(new MaterialProdutoOrcamentoColumnModel(fm));
            tabelaMaterialProduto.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

        } catch (Exception e) {
            exceptions.Exceptions(e.getMessage(), "DialogProdutoCadOrcamento-configurarTabela");
        }
    }

    public void setListaMaterialProdutoOrcamento(List<MaterialProdutoOrcamento> listMaterial) {
        this.tabelaMaterialProduto.setModel(new MaterialProdutoOrcamentoTableModel(listMaterial));
    }

    private void tabelaMaterialProdutoMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tabelaMaterialProdutoMouseClicked
        try {

            DecimalFormat df = new DecimalFormat("0.000");

            indexTabela = tabelaMaterialProduto.getSelectedRow();

            if (indexTabela >= 0) {

                btSalvar.setEnabled(false);
                btEditar.setEnabled(true);
                btRemover.setEnabled(true);
                btCancelarMaterial.setEnabled(true);

                MaterialProdutoOrcamentoTableModel model = (MaterialProdutoOrcamentoTableModel) tabelaMaterialProduto.getModel();
                materialProduto = model.getValoresMaterial(indexTabela);

                cbMaterial.setEnabled(false);
                txPesoMetro.setEnabled(false);
                txMetros.setEnabled(false);

                cbMaterial.setSelectedItem(materialProduto.getMaterial());

                double aux = Double.valueOf(materialProduto.getMaterial().getPesoMetro());
                txPesoMetro.setText(df.format(aux).replace(",", ".") + " Kg/m");
                txMetros.setText(String.valueOf(materialProduto.getMetros()));

            }

        } catch (Exception e) {
            exceptions.Exceptions(e.getMessage(), "DialogProdutoCadOrcamento-tabelaMaterialProdutoMouseClicked");
        }
    }//GEN-LAST:event_tabelaMaterialProdutoMouseClicked

    private void txValorAluminioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_txValorAluminioActionPerformed
        // TODO add your handling code here:
}//GEN-LAST:event_txValorAluminioActionPerformed

    private void txValorAluminioKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txValorAluminioKeyPressed
        // TODO add your handling code here:
}//GEN-LAST:event_txValorAluminioKeyPressed

    private void txLarguraActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_txLarguraActionPerformed
        // TODO add your handling code here:
}//GEN-LAST:event_txLarguraActionPerformed

    private void txLarguraKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txLarguraKeyPressed
        // TODO add your handling code here:
}//GEN-LAST:event_txLarguraKeyPressed

    private void txComprimentoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_txComprimentoActionPerformed
        // TODO add your handling code here:
}//GEN-LAST:event_txComprimentoActionPerformed

    private void txComprimentoKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txComprimentoKeyPressed
        // TODO add your handling code here:
}//GEN-LAST:event_txComprimentoKeyPressed

    private void btAddTipoMaterialActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btAddTipoMaterialActionPerformed
        DialogCadTipoProduto cadTipoProduto = new DialogCadTipoProduto(null, true);
        cadTipoProduto.setVisible(true);
        tipo = true;
        carregarComboMaterialTipoProduto();
        tipo = false;
    }//GEN-LAST:event_btAddTipoMaterialActionPerformed

    private void btEditarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btEditarActionPerformed
        cbMaterial.setEnabled(true);
        cbTipoProduto.setEnabled(true);
        txMetros.setEnabled(true);

        btSalvar.setEnabled(true);
        btEditar.setEnabled(false);
        btRemover.setEnabled(false);
        btCancelarMaterial.setEnabled(true);

        btAddTipoMaterial.setEnabled(true);
        txValorAluminio.setEnabled(true);
        txLargura.setEnabled(true);
        txComprimento.setEnabled(true);

        operacao = "editar";
    }//GEN-LAST:event_btEditarActionPerformed

    private void calcularKilo() {

        DecimalFormat df = new DecimalFormat("0.000");

        float soma = 0;
        for (int i = 0; i < tabelaMaterialProduto.getRowCount(); i++) {

            String teste = (String) tabelaMaterialProduto.getValueAt(i, 2);
            String[] novo = teste.split("Kg");

            float valor = Float.valueOf(novo[0].replace(",", "."));

            soma += valor;
        }

        lbPeso.setText(df.format(soma).replace(",", "."));

    }

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                DialogCadProdutoOrcamento dialog = new DialogCadProdutoOrcamento(new javax.swing.JFrame(), true);
                dialog.addWindowListener(new java.awt.event.WindowAdapter() {

                    @Override
                    public void windowClosing(java.awt.event.WindowEvent e) {
                        System.exit(0);
                    }
                });
                dialog.setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private org.jdesktop.swingx.JXHyperlink btAddTipoMaterial;
    private javax.swing.JButton btCancelar;
    private javax.swing.JButton btCancelarMaterial;
    private javax.swing.JButton btEditar;
    private javax.swing.JButton btOk;
    private javax.swing.JButton btRemover;
    private javax.swing.JButton btSalvar;
    private javax.swing.JComboBox cbMaterial;
    private javax.swing.JComboBox cbTipoProduto;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel12;
    private javax.swing.JLabel jLabel13;
    private javax.swing.JLabel jLabel14;
    private javax.swing.JLabel jLabel15;
    private javax.swing.JLabel jLabel16;
    private javax.swing.JLabel jLabel17;
    private javax.swing.JLabel jLabel18;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JLabel lbPeso;
    private javax.swing.JLabel lbPeso1;
    private javax.swing.JTable tabelaMaterialProduto;
    private javax.swing.JFormattedTextField txComprimento;
    private javax.swing.JFormattedTextField txLargura;
    private javax.swing.JFormattedTextField txMetros;
    private javax.swing.JFormattedTextField txPesoMetro;
    private javax.swing.JFormattedTextField txValorAluminio;
    // End of variables declaration//GEN-END:variables

    public void setProduto(ProdutoOrcamento produtoOrcamento) {
        try {

            txValorAluminio.setText(String.valueOf(produtoOrcamento.getValorAluminio()));
            txValorAluminio.setEnabled(false);

        } catch (Exception e) {
            exceptions.Exceptions(e.getMessage(), "DialogProdutoCadOrcamento-setProduto");
        }
    }

    public void setEditarProdtuoMaterial(List<ProdutoOrcamento> listaMaterialProduto) {

//        configurarTabela(listaMaterialProduto);
//
//        txValorAluminio.setText(String.valueOf(produtoOrcamento.getValorAluminio()));
//        txLargura.setText(String.valueOf(produtoOrcamento.getLargura()));
//        txComprimento.setText(String.valueOf(produtoOrcamento.getComprimento()));
//
//        txMetros.setEnabled(false);
    }

}
